package com.zhan.rkforum.service;

import com.zhan.rkforum.bean.LoginTicket;
import com.zhan.rkforum.bean.User;
import org.springframework.security.core.GrantedAuthority;

import java.util.Collection;
import java.util.Map;

/**
 * 用户服务
 *
 * @author mrwu-
 * @date 2021/06/14
 */
@SuppressWarnings("all")
public interface UserService{
    /**
     * 根据id查询User
     *
     * @param id 用户id
     * @return 根据id查询到的User
     */
    User findUserById(int id);

    /**
     * 找到用户的名字
     * 根据用户名查询User
     *
     * @param username 用户名
     * @return 查询结果
     */
    User findUserByName(String username);

    /**
     * 激活账号
     *
     * @param username 用户名
     * @param code     代码
     * @return int
     */
    int active(String username, String code);

    /**
     * 注册
     *
     * @param user 用户
     * @return {@link Map<String, Object>}
     */
    Map<String, Object> register(User user);

    /**
     * 登录
     *
     * @param username       用户名
     * @param password       密码
     * @param expiredSeconds 过期的秒
     * @return {@link Map<String, Object>}
     */
    Map<String, Object> login(String username, String password, int expiredSeconds);

    /**
     * 注销
     * 退出登录
     *
     * @param ticket 登陆凭证
     * @return {@link String}
     */
    void logout(String ticket);

    /**
     * 找到登录凭证
     *
     * @param ticket 凭证
     * @return {@link LoginTicket}
     */
    LoginTicket findLoginTicket(String ticket);

    /**
     * 更新头像url
     *
     * @param id        id
     * @param headerUrl 头像url
     */
    void updateHeader(int id, String headerUrl);


    /**
     * 更新密码
     *
     * @param id          id
     * @param newPassword 新密码
     */
    void updatePassword(int id, String newPassword);


    Collection<? extends GrantedAuthority> getAuthorities(int userId);
}
